// 获取距离（图表y轴标签距离左侧距离）
// export function getDistance(maxValue: number) {
//   let length = 0;
//   if (maxValue >= 100000000) {
//     // length = Math.round(maxValue / 100000000).toString().length;
//     length = 4;
//   } else if (maxValue >= 10000) {
//     // length = Math.round(maxValue / 10000).toString().length;
//     length = 3;
//   } else {
//     length = Math.round(maxValue).toString().length;
//   }
//   return length * 12 + 12;
// }
export function getDistance(maxValue: number, minValue: number) {
  let length = 0;
  if (maxValue >= 100000000 && minValue >= 100000000) {
    // 亿，亿
    length = Math.round(maxValue / 100000000).toString().length;
  } else if (maxValue >= 100000000 && minValue >= 10000 && minValue < 100000000) {
    // 亿，万
    length = Math.round(minValue / 10000).toString().length;
  } else if (maxValue >= 100000000 && minValue < 10000) {
    // 亿，0
    length = Math.round(minValue).toString().length;
    if (minValue === 0) {
      length = 4;
    }
  } else if (maxValue >= 10000 && maxValue < 100000000 && minValue >= 10000 && minValue < 100000000) {
    // 万，万
    length = Math.round(maxValue / 10000).toString().length;
  } else if (maxValue >= 10000 && maxValue < 100000000 && minValue < 10000) {
    // 万，0
    length = Math.round(minValue).toString().length;
    if (minValue === 0) {
      length = Math.round(maxValue).toString().length > length + 1 ? Math.round(maxValue / 10000).toString().length : (length + 1);
    }
  } else if (maxValue < 10000 && minValue < 10000) {
    length = Math.round(maxValue).toString().length;
  }
  return length * 10;
}

// 获取最大最小值
export function getMaxAndMin(data: any[]) {
  let arr: any[] = [];
  data.forEach((item: any) => {
    arr = arr.concat(item.data);
  });
  arr = arr.map((item: any) => (typeof item === 'number' ? item : item.value));
  const minValue = Math.min.apply(null, arr);
  const maxValue = Math.max.apply(null, arr);
  return { maxValue, minValue };
}

// 格式化小数（保留小数位数，末尾不补0）
// TODO: 命名不对，此函数作用为格式化小数为百分比格式，应该与纯格式化小数的函数区分
export function formatDecimal(num: number, precision: number) {
  const numberStr = ((num * 10000) / 100).toFixed(precision);
  const arr = numberStr.split('.');
  const decimalsStr = clearZero(arr[1]);
  let res = arr[0];
  res += decimalsStr.length > 0 ? `.${decimalsStr}` : '';
  return res;
}

// 除去尾部0占位的保留小数
// TODO: 单独使用此方法，产出的值还是不对，不应依赖外部的处理
function clearZero(str = '') {
  const strArr = str.split('').reverse();
  const handleList: any[] = [];
  let findNoZero = false;
  strArr.forEach((item) => {
    if (findNoZero) handleList.push(item);
    else if (Number(item) !== 0) {
      findNoZero = true;
      handleList.push(item);
    }
  });
  return handleList.reverse().join('');
}
